﻿using Serilog;

namespace SerilogApp.Service;

/// <summary>
/// 示例逻辑服务
/// </summary>
public class FooService {
  private readonly ILogger _logger;

  public FooService () {
    // 底层调用了CreateLogger创建了新的ILogger对象
    _logger = Log.ForContext<FooService>();
  }

  /// <summary>
  /// 构造ILogger
  /// </summary>
  public void PrintWithNewLogger () {
    _logger.Information("构建的ILoggre对象");
    _logger.Error(new Exception("发生异常"), "构建的ILoggre对象");
  }

  /// <summary>
  /// 静态的ILogger成员
  /// </summary>
  public void PrintWithStaticLogger () {
    Log.Logger.Error("使用Serilog.Log.Logger打印日志");

    // 可简化为Serilog.Log.XXX(内部依然使用了Serilog.Log.Logger.XXX)
    Log.Debug("使用Serilog.Log静态方法打印日志");
    Log.Information("使用Serilog.Log静态方法打印日志");
    Log.Warning("使用Serilog.Log静态方法打印日志");
    Log.Error("使用Serilog.Log静态方法打印日志");
    Log.Fatal("使用Serilog.Log静态方法打印日志");
    Log.Verbose("等价于Trace级别的日志");
  }
}